Fix flaky Observer tests using fake clock #3318
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The tests in
observer_test.cpp
that call helper functiontestGetDataReceivedPerSecondByFillingBuffer
are flaky in CI because they rely on the passage of actual time.This PR adds a
FakeClock
that simulates the passage of time and can be substituted for anystd::chrono
clock. The time point ofFakeClock
is fixed and can be explicitly advanced forward withFakeClock::advance
.Observer
now has a template arg that specifies the clock to use (default isstd::chrono::steady_clock
) which enables usage ofFakeClock
inobserver_test.cpp
.Testing Done
observer_test.cpp
passesfake_clock_test.cpp
Resolved Issues
Resolves #3309
Length Justification and Key Files to Review
Review Checklist
It is the reviewers responsibility to also make sure every item here has been covered
.h
file) should have a javadoc style comment at the start of them. For examples, see the functions defined inthunderbots/software/geom
. Similarly, all classes should have an associated Javadoc comment explaining the purpose of the class.TODO
(or similar) statements should either be completed or associated with a github issue